A user, such as a system administrator, a software developer, and a performance analysis staff member, can use an introspection tool, such as the SystemTap introspection tool for the Linux® operating system, to examine the activities of a user application as it is executing. Examples of user applications include database management applications, such as MySQL® and PostgreSQL. Many user application developers include user-space markers, also known as probe points, in the user application source code to identify events in the application code which allow a user to examine the state of the application at that point in time when the application is running.
Application developers may embed a large number of probe points in the application code and traditionally, an application sets up all of its probe points for use, which can result in a significant amount of overhead associated with the set up process. Moreover, a user that is examining the application may not be interested in examining the application at all of the probe points, but rather, at only a few of the probe points. An application that sets up all of its probe points, thus, performs unnecessary set up processes which can place a burden on the application's performance.
In addition, an introspection tool can run a user application under its control. That is, when an application ‘hits’ a probe point during its execution, the application relinquishes control to the introspection tool to allow the introspection tool to examine the probe point at the time the probe point is ‘hit’. A user, however, may run an application without running the introspection tool. For example, a user may run MySQL® without running SystemTap. In such a case, the probe points are not being used, and yet, an application may still set up all of its probe points for use. The application executes run-time probe setup code for all of the probe points and stores the incoming probe arguments in a location which an introspection tool can subsequently access, even when an introspection tool is not running, and even when a user is not interested in examining the application at all of the probe points.